package com.dinetech.ejecutor;

import java.util.ArrayList;

import com.dinetech.dao.SpinnerVariosAdapter;
import com.dinetech.dao.UbicacionAdapter;
import com.dinetech.dao.WSEvento;
import com.dinetech.ejecutor.R.id;
import com.dinetech.entidades.Personal;
import com.dinetech.entidades.Session;
import com.dinetech.entidades.Ubicacion;

import android.app.ActionBar.LayoutParams;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class EventoEmpadre extends Fragment implements OnClickListener {

	private static final String ID_GALPON="0";
	private int idGalpon;
	Spinner cbxRespE, cbxUbicacion, cbxLG, cbxTE;
	Personal per = Personal.getInstance();
	int idUsuario, idUbicacion ;
	String idTipoE, idLG;
	Session ses= Session.getInstance();	
	EditText txtCantH , Observaciones; 
	Button btnGrabarE;
	

	public static EventoEmpadre newInstance (int IdGalpon){
		
		
		EventoEmpadre eventoE = new EventoEmpadre();
		
		Bundle bundle = new Bundle();
		bundle.putInt(ID_GALPON, IdGalpon);
		eventoE.setArguments(bundle);
		eventoE.setRetainInstance(true);
		
		return eventoE;
	}
	
	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);

	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		ViewGroup view = (ViewGroup)inflater.inflate(R.layout.evento_empadre,container, false);

		cbxRespE = (Spinner)view.findViewById(R.id.cbxResponsable);
		cbxUbicacion = (Spinner)view.findViewById(R.id.cbxPoza);
		cbxLG= (Spinner)view.findViewById(R.id.cbxLineaGenetica);
		cbxTE = (Spinner)view.findViewById(R.id.cbxTipoEmpadre);		
		txtCantH = (EditText)view.findViewById(R.id.txtCantHembras);
		Observaciones = (EditText)view.findViewById(R.id.txtComentario);
		btnGrabarE = (Button)view.findViewById(id.btnEmpadre);
		btnGrabarE.setOnClickListener(this);		
		btnGrabarE.requestFocus();
		
		this.idGalpon = getArguments().getInt(ID_GALPON);

        new ListarUbicacion().execute();				
		
        
        llenarSpinner();
		
		return view;
	}

	
	public void refrescarFragment(){
		
		new ListarUbicacion().execute();
		llenarSpinner();
		Observaciones.setText("");
		txtCantH.setText("");		
		
	}
	
	public void onClick(View v){
		
		//Si el campo esta vacio lo ingresa como 0
		if(txtCantH.getText().length()==0){
			txtCantH.setText("0");
		}
		
		int cantHembras= Integer.parseInt(txtCantH.getText().toString());
		
		if(cantHembras < 1){
			AlertDialog.Builder alerta = new AlertDialog.Builder(getActivity());
			
			alerta.setTitle("Alerta");			
			alerta.setMessage("La cantidad de hembras no puede ser menor a 1");			
			alerta.setPositiveButton("OK", 
					new DialogInterface.OnClickListener() {
			     public void onClick(DialogInterface dialog, int which) {
			     }
			    });
			alerta.show();
			txtCantH.setText("");
			
		}
		
		else{
			new grabarEmpadre().execute();
		}
		
		txtCantH.requestFocus();

	 }
	
	public class SpinnerListenerUbic implements OnItemSelectedListener {
	      
        public void onItemSelected(AdapterView<?> parent,
            View view, int pos, long id) {
        
            int convert = Integer.parseInt( Long.toString(id));
            idUbicacion = convert;	   
            if(idUbicacion== 0){
				btnGrabarE.setEnabled(false);
			}
        }

		@Override
		public void onNothingSelected(AdapterView<?> arg0) {
			
			
		}
	}
	
	public class SpinnerListenerTEmpadre implements OnItemSelectedListener {
	      
        public void onItemSelected(AdapterView<?> parent,
            View view, int pos, long id) {
        
            int convert = Integer.parseInt(Long.toString(id));

            if(convert < 10)
            {
            	idTipoE ="0" + String.valueOf(convert);
            }
            else
            {
            	idTipoE = String.valueOf(convert);
            }
        }

		@Override
		public void onNothingSelected(AdapterView<?> arg0) {
			
			
		}
	}
	
	public class SpinnerListenerLGenetica implements OnItemSelectedListener {
	      
        public void onItemSelected(AdapterView<?> parent,
            View view, int pos, long id) {
        
            int convert = Integer.parseInt(Long.toString(id));
            
            if(convert < 10)
            {
            	idLG ="0" + String.valueOf(convert);
            }
            else
            {
            	idLG = String.valueOf(convert);
            }
        }

		@Override
		public void onNothingSelected(AdapterView<?> arg0) {
			
			
		}
	}
	
	public class SpinnerListenerResp implements OnItemSelectedListener {
	      
        public void onItemSelected(AdapterView<?> parent,
            View view, int pos, long id) {
        
            int convert=Integer.parseInt( Long.toString(id));
            idUsuario= convert;	            	         
        }

		@Override
		public void onNothingSelected(AdapterView<?> arg0) {
			
			
		}
	}
		
	private void llenarSpinner(){

		SpinnerVariosAdapter adaptador1 = new SpinnerVariosAdapter(EventoEmpadre.this, ses.getLISTA_LINEA_GENETICA());
		cbxLG.setAdapter(adaptador1);
		cbxLG.setOnItemSelectedListener(new SpinnerListenerLGenetica());
		
		SpinnerVariosAdapter adaptador2 = new SpinnerVariosAdapter(EventoEmpadre.this, ses.getLISTA_TIPO_EMPADRE());
		cbxTE.setAdapter(adaptador2);
		cbxTE.setOnItemSelectedListener(new SpinnerListenerTEmpadre());
		
		SpinnerVariosAdapter adaptadorRes = new SpinnerVariosAdapter(EventoEmpadre.this, ses.getLISTA_RESPONSABLE());
		cbxRespE.setAdapter(adaptadorRes);
		cbxRespE.setOnItemSelectedListener(new SpinnerListenerResp());
		
		for(int i=0; i <  adaptadorRes.getCount(); i++){
			int idRA=(int)(long)adaptadorRes.getItemId(i) ;
			idUsuario = per.getIdPersonal();
			if( idRA == idUsuario){
				cbxRespE.setSelection(i);					
			}	        
		}
	}
	
	private class ListarUbicacion extends AsyncTask<String, Void, ArrayList<Ubicacion>>{

		@Override
		protected ArrayList<Ubicacion> doInBackground(String... params) {
			ArrayList<Ubicacion> listaUbicacion;
			WSEvento wsE = new WSEvento();
			
			listaUbicacion = wsE.ubicacionPorEvento("01", idGalpon, 2, 3, 1, 0, per.getIdSucursal());
			
			return listaUbicacion;
		}

		@Override
		protected void onPostExecute(ArrayList<Ubicacion> result) {
			super.onPostExecute(result);
			
			
			UbicacionAdapter adaptadorUbic = new UbicacionAdapter(EventoEmpadre.this, result);
			cbxUbicacion.setAdapter(adaptadorUbic);
			cbxUbicacion.setOnItemSelectedListener(new SpinnerListenerUbic());
			
			
		}
		
	}
	
	
	
	private class grabarEmpadre extends AsyncTask<String, Void, String>{
		
		
		@Override
	    protected String doInBackground(String... urls) {

	    	WSEvento we= new WSEvento();
	    		    	
	    	String Msg = we.grabarEvento("01", "01", idTipoE, idLG, ses.obtenerFechaActual(), 
	    			String.valueOf(idUbicacion), "0", 1, Integer.parseInt(txtCantH.getText().toString()),0, "0", "0", "0","0", 0,
	    			Observaciones.getText().toString(), idUsuario, ses.obtenerFechaActual2(), idUsuario, 0, "0",
	    			per.getIdSucursal(), idGalpon,0,0);
	    	return Msg;
	        	
	    }

	    @Override
	    protected void onPostExecute(String resultadoWS) {
	        super.onPostExecute(resultadoWS);	
	         
	        Toast msg = Toast.makeText(getActivity(), resultadoWS, Toast.LENGTH_LONG);
	        msg.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
	        msg.show();
	        refrescarFragment();
	        
	    }
	}
	
}
